GCC=g++
WFLAG=-Wall -Wextra -pedantic -ansi -Wmissing-declarations
EXEC=bin/parseur
FICHIER=obj/structure_mot.o obj/structure_index.o obj/fonction_base.o obj/arbre.o obj/hashage.o obj/main.o
FICHIER_TEST=bin/test_structure_mot bin/test_fonction_base bin/test_structure_index
DOSSIER_ZIP=bezzaouya_dubois_gappa.zip

all: $(FICHIER) obj/mem.o
	mkdir -p bin
	$(GCC) $(WFLAG) -o $(EXEC) $(FICHIER) obj/mem.o

obj/main.o: src/main.cpp
	$(GCC) -c $(WFLAG) -o $@ $<

obj/hashage.o: src/hashage.cpp src/hashage.hpp obj/structure_index.o
	$(GCC) -c $(WFLAG) -o $@ $<

obj/arbre.o: src/arbre.cpp src/arbre.hpp obj/structure_index.o
	$(GCC) -c $(WFLAG) -o $@ $<

obj/structure_index.o: src/structure_index.cpp src/structure_index.hpp obj/structure_mot.o
	$(GCC) -c $(WFLAG) -o $@ $<

obj/fonction_base.o: src/fonction_base.cpp src/fonction_base.hpp obj/structure_index.o
	$(GCC) -c $(WFLAG) -o $@ $<

obj/structure_mot.o: src/structure_mot.cpp src/structure_mot.hpp
	mkdir -p obj
	$(GCC) -c $(WFLAG) -o $@ $<

test: $(FICHIER_TEST)

bin/test_fonction_base: obj/structure_mot.o obj/structure_index.o obj/arbre.o obj/hashage.o obj/fonction_base.o obj/test_fonction_base.o
	$(GCC) $(WFLAG) -o $@ $^

obj/test_fonction_base.o: src/test_fonction_base.cpp src/test_fonction_base.hpp
	$(GCC) -c $(WLAG) -o $@ $<

bin/test_structure_mot: obj/structure_mot.o obj/test_structure_mot.o obj/mem.o
	mkdir -p bin
	$(GCC) $(WFLAG) -o $@ $^

obj/test_structure_mot.o: src/test_structure_mot.cpp src/test_structure_mot.hpp 
	$(GCC) -c $(WFLAG) -o $@ $<

bin/test_structure_index: obj/structure_index.o obj/test_structure_index.o obj/mem.o
	$(GCC) $(WFLAG) -o $@ $^

obj/test_structure_index.o: src/test_structure_index.cpp src/test_structure_index.hpp
	$(GCC) -c $(WFLAG) -o $@ $<

obj/mem.o: src/mem.cpp src/mem.hpp
	$(GCC) -c -o $@ $<

clean:
	rm -fvr obj/ bin/
	rm -fv src/\#*\# src/*~

zip: clean
	zip -r ../$(DOSSIER_ZIP) ../iut-as-parseur-poeme